/*
 * Copyright 2023 OpenSPG Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied.
 */

package com.antgroup.openspg.reasoner.common.graph.edge.impl;

import com.antgroup.openspg.reasoner.common.constants.Constants;
import com.antgroup.openspg.reasoner.common.graph.edge.Direction;

public class OptionalEdge<K, EV> extends Edge<K, EV> {

  /** optional edge */
  public OptionalEdge(K srcId, K targetId) {
    super(srcId, targetId, null, 0L, Direction.OUT, Constants.OPTIONAL_EDGE_FLAG);
  }

  @Override
  public OptionalEdge<K, EV> clone() {
    return new OptionalEdge<>(this.sourceId, this.targetId);
  }

  @Override
  public String toString() {
    return "OptionalEdge(s="
        + getSourceId()
        + ",p="
        + getType()
        + ",o="
        + getTargetId()
        + ",direction="
        + direction
        + ",version="
        + version
        + ",property="
        + getValue()
        + ")";
  }
}
